/*
 * @Author: stark
 * @Date: 2022-06-18 11:27:22
 */
// 渲染数据
$.cookie.json = true;
let userInfo = $.cookie('userInfo') ? $.cookie('userInfo') : null;
let goodsIds = $.getUrlParam('id');
// 商品数量
let number2 = 0;
// 商品小计
let subtotal2 = 0;
$.get(baseUrl + '/cart/lists', { userId: userInfo.id }, response => {
    let result = response.data;
    let html = '';
    // 购物车数据渲染
    if (goodsIds) {
        let goodsIdsArr = goodsIds.split(',');
        let arr = goodsIdsArr.map(item => {
            return item - 0
        })

        result.forEach((item, index) => {
            html += `<div class="cart-item ${arr.indexOf(item.id) != -1 ? 'check-cart-item' : ''}">
                        <div class="p-checkbox">
                            <input type="checkbox" ${arr.indexOf(item.id) != -1 ? 'checked' : ''} class="j-checkbox">
                        </div>
                        <div class="p-goods">
                            <div class="p-img">
                                <img src="${item.goods === null ? '' : item.goods.goodsImg}" alt="">
                            </div>
                            <div class="p-msg">${item.goods === null ? '' : item.goods.goodsName}</div>
                        </div>
                        <div class="p-price">￥${item.goods === null ? '' : item.goods.shopPrice}</div>
                        <div class="p-num">
                            <div class="quantity-form">
                                <a href="javascript:;" class="decrement">-</a>
                                <input type="text" class="itxt" value="${item.goodsCount}">
                                <a href="javascript:;" class="increment">+</a>
                            </div>
                        </div>
                        <div class="p-sum">￥${item.goods === null ? '' : item.goods.shopPrice * item.goodsCount}.00</div>
                        <div class="p-action"><a href="javascript:;">删除</a></div>
                    </div>`
        })
        $(".cart-item-list").html(html);
    } else {
        result.forEach((item, index) => {
            html += `<div class="cart-item ${index === 0 ? 'check-cart-item' : ""}">
                        <div class="p-checkbox">
                            <input type="checkbox" ${index === 0 ? 'checked' : ''} class="j-checkbox">
                        </div>
                        <div class="p-goods">
                            <div class="p-img">
                                <img src="${item.goods === null ? '' : item.goods.goodsImg}" alt="">
                            </div>
                            <div class="p-msg">${item.goods === null ? '' : item.goods.goodsName}</div>
                        </div>
                        <div class="p-price">￥${item.goods === null ? '' : item.goods.shopPrice}</div>
                        <div class="p-num">
                            <div class="quantity-form">
                                <a href="javascript:;" class="decrement">-</a>
                                <input type="text" class="itxt" value="${item.goodsCount}">
                                <a href="javascript:;" class="increment">+</a>
                            </div>
                        </div>
                        <div class="p-sum">￥${item.goods === null ? '' : item.goods.shopPrice * item.goodsCount}.00</div>
                        <div class="p-action"><a href="javascript:;">删除</a></div>
                    </div>`
        })
        $(".cart-item-list").html(html);

    }




    // 默认选择计算
    getSum();

    // 删除商品功能
    $(document).on('click', ".p-action a", function () {
        let index = $(this).parents(".cart-item").index();
        // console.log(index);
        $(this).parents(".cart-item").remove();
        $.get(baseUrl + '/cart/remove', { cartId: result[index].id, userId: result[index].userId }, response => {
            console.log(response);
        })
        getSum();
    })

    // 修改购车商品数量
    $(document).on('change', ".itxt", function () {
        // 先的到文本框里面的值  乘以 当前商品的价格
        var n = $(this).val();
        // 当前商品的价格
        var p = $(this).parents(".p-num").siblings(".p-price").html()
        // console.log(p);
        var p = p.substr(1);
        var sum = (p * n).toFixed(2);
        $(this).parents(".p-num").siblings(".p-sum").html("￥" + sum);

        let index = $(this).parents(".cart-item").index();

        let data = {
            userId: result[index].userId,
            cartId: result[index].id,
            goodsId: result[index].goodsId,
            goodsCount: n - 0
        }
        $.post(baseUrl + '/cart/change', data, response => {
            getSum();
        })

    });

    // 清空购物车
    $(document).on('click', ".clear-all", function () {
        let index = $()
        $(".cart-item").remove();
        $.get(baseUrl + '/cart/clear', { userId: result[0].userId }, response => {
            console.log(response);
        })
        getSum();
    })

    // / 1. 全选 全不选功能模板
    $(document).on('change', ".checkall", function () {
        $(".j-checkbox,.checkall").prop("checked", $(this).prop("checked"))
        if ($(this).prop("checked")) {
            // 让所有的商品添加 check-cart-item 类名
            $(".cart-item").addClass("check-cart-item");
            getSum();

        } else {
            // check-cart-item 移除
            $(".cart-item").removeClass("check-cart-item");
            getSum();
        }
    });

    // 2. 如果小复选被选中的个数等于3 就应该把全选按钮选上 否则全选按钮不选
    $(document).on('change', ".j-checkbox", function () {
        $(".j-checkbox:checked").length === $(".j-checkbox").length ? $(".checkall").prop("checked", true) : $(".checkall").prop("checked", false);
        getSum();
        if ($(this).prop("checked")) {
            // 让当前的商品添加 check-cart-item 类名
            $(this).parents(".cart-item").addClass("check-cart-item")

        } else {
            // check-cart-item 移除
            $(this).parents(".cart-item").removeClass("check-cart-item")
        }
    });


    // 3. 增商品属性模块 
    $(document).on('click', ".increment", function () {
        $(this).parents(".p-num").siblings(".p-checkbox").find(".j-checkbox").prop("checked", "true");
        $(".j-checkbox:checked").length === $(".j-checkbox").length ? $(".checkall").prop("checked", true) : $(".checkall").prop("checked", false);
        $(this).parents(".cart-item").addClass('check-cart-item')
        // 得到当前兄弟文本框的值
        var n = $(this).siblings(".itxt").val();
        // console.log(n);
        n++;
        $(this).siblings(".itxt").val(n);
        // 3. 计算小计模块 根据文本框的值 乘以 当前商品的价格 就是 商品的小计
        // 当前商品的价格 p
        var p = $(this).parents(".p-num").siblings(".p-price").html()
        var p = p.substr(1);
        // console.log(p);
        var sum = (p * n).toFixed(2);
        $(this).parents(".p-num").siblings(".p-sum").html("￥" + sum);

        let index = $(this).parents(".cart-item").index();

        let data = {
            userId: result[index].userId,
            cartId: result[index].id,
            goodsId: result[index].goodsId,
            goodsCount: n - 0
        }
        $.post(baseUrl + '/cart/change', data, response => {
            console.log(response);
            getSum();
        })

    });

    // 4. 减商品属性模块 
    $(document).on('click', ".decrement", function () {
        $(this).parents(".p-num").siblings(".p-checkbox").find(".j-checkbox").prop("checked", "true");
        $(this).parents(".cart-item").addClass('check-cart-item')
        // 得到当前兄弟文本框的值
        var n = $(this).siblings(".itxt").val();
        if (n == 1) {
            return false;
        }
        n--;
        $(this).siblings(".itxt").val(n);
        // parents(".p-num") 返回指定的祖先元素
        var p = $(this).parents(".p-num").siblings(".p-price").html()
        // console.log(p);
        var p = p.substr(1);
        // console.log(p);
        var sum = (p * n).toFixed(2);
        $(this).parents(".p-num").siblings(".p-sum").html("￥" + sum);
        let index = $(this).parents(".cart-item").index();

        let data = {
            userId: result[index].userId,
            cartId: result[index].id,
            goodsId: result[index].goodsId,
            goodsCount: n - 0
        }
        $.post(baseUrl + '/cart/change', data, response => {
            console.log(response);
            getSum();
        })
    })

    // 5. 结算跳转
    $(".send").on("click", function () {
        let goodsIds = [];
        $(".j-checkbox:checked").each((i, ele) => {
            let index = $(ele).parents(".cart-item").index();
            goodsIds.push(result[index].id);
        })

        if (goodsIds.length == 0) {
            layer.msg('请选择商品');
            return false;
        } else {
            location.href = 'orderInfo.html?goodsIds=' + goodsIds

        }


    })

})

// 全部商品结算
function getSum() {
    var count = 0; // 计算总件数
    var money = 0; // 计算总额

    $(".itxt").each(function (i, ele) {
        // 判断有没有被勾选
        if ($(this).parents(".p-num").siblings(".p-checkbox").find(".j-checkbox").prop("checked")) {
            count += parseInt($(ele).val());
        }
    });

    $(".amount-sum em").text(count);

    $(".p-sum").each(function (i, ele) {

        if ($(this).siblings(".p-checkbox").find(".j-checkbox").prop("checked")) {
            money += parseFloat($(ele).text().substr(1));
        }
    });

    $(".price-sum em").text("￥" + money.toFixed(2))
}

